//3. 继承 EventEmitter 类
//Dog 类继承 EventEmitter 类
//Dog 类中，包含：name 和 energy 两个私有数据成员
//name 是狗的名字，energy 是狗的能量
//用构造函数对私有数据 name 和 energy 进行初始化
//energy 大于零时，每隔 1 秒发出 bark 狗叫事件
//狗每叫一次，energy 减 1，energy 为零时，狗不能叫
//Dog 的 energy 可以被修改

const {EventEmitter} = require('events');

class Dog extends EventEmitter{
  constructor(name,energy){
    super(); //有继承需要，一般需要写上,调用基类的构造函数
    this.#name = name;
    this.#energy = energy;
    const timer = setInterval(()=>{
      if(this.#energy < 0){
        clearInterval(timer);
      }else{
        this.emit('bark',this.#name,this.#energy--);    
       }
    },1000)
  }

  #name = '';
  #energy = 0;
}
//构造函数 公共方法 私有方法 私有数据（公共的放在上面私有的放在下面）
module.exports = Dog;
